package com.example.test.主方法运行测试;

import lombok.extern.slf4j.Slf4j;

import java.util.Random;
import java.util.Scanner;

public class LogicControl {

    // 注意 自定函数 menu 和 game的位置，不需要放在 main 方法的前面，因为 java 里 是没法函数声明的说法，要用就直接调用的
    public static void menu() {// 游戏菜单选择界面
        System.out.println("*****************");
        System.out.println("**** 1.Play  ****");
        System.out.println("**** 0.Exit  ****");
        System.out.println("*****************");
    }

    public static void game() {// 游戏运行程序
        Scanner scanner = new Scanner(System.in);//为生成一个随机值，做准备
        Random random = new Random();//默认随机种子是系统时间，提示 在括号里加上数字，它生成一个指定数，所以最好不要画蛇添足
        int toGuess = random.nextInt(100);// 生成 100 以内的数字
        System.out.println("答案是:" + toGuess);
        while (true) {// 死循环，不猜对不退出
            System.out.println("请输入你所猜的数字");
            int guess = scanner.nextInt();
            if (guess < toGuess) {
                System.out.println("猜小了");
            } else if (guess > toGuess) {
                System.out.println("猜大了");
            } else {// guess == toGuess
                System.out.println("猜对了");
                break;//猜对了，才有权力退出， 当然你把游戏插卡拿走，强制退出游戏，我能拿你怎么办？
            }// 图55
        }
    }

    public static void main(String[] args) {// 首先，主体 类和方法 要先写好
        Scanner scanner = new Scanner(System.in);// 为我们输入数据做好准备
        int input = 0;// 输入变量初始化
        do {
            menu();// 玩家进入游戏，一开始肯定是游戏界面
            System.out.println("请选择：");// 根据我们的游戏游戏界面选项，决定输入的值
            input = scanner.nextInt();// 输入变量更新
            switch (input) {// 使用switch 语句 进行，对输入数据的判断
                case 1: {//如果是 1， 就是play 玩游戏
                    game();//使用 game 自定义函数，图54
                    break;// 游戏结束，退出游戏，回到游戏主界面. 图56
                }
                case 0: {// 如果是 0，退出程序，不玩了！
                    System.out.println("退出游戏");
                    break;// 图 57
                }
                default: {// 如用用户输入的数据，不是我指定的数据，则我们需要反馈用户信息，让用户重新选择
                    System.out.println("输入错误，请重新输入");//图 53
                    break;// 注意 break 是可以 switch 和用，break 现在是终止switch 语句，而不是循环语句
                    // 这一点是 break的特殊用法
                }

            }
        } while (input > 0);// 条件判断，如果输入0和负数，执行完上面的程序后，退出循环(这是do while 的特点，先干再说)，结束游戏
        // 如果输入输入一个正数，则循环继续，只不过如果该正数不为1是不能进行游戏的，系统会告知你输入错误，请重新选择

    }
}
